package com.keensense.vcm.model;

import com.keensense.vcm.model.enums.CredentialTypeEnum;
import com.keensense.vcm.model.enums.GenderEnum;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 * @author lanjian
 * @date 2020/7/27
 */
@XmlRootElement(name = "request")
public class GetPeoplesRequest {

    private GetPeoplesRequest() {
    }

    public GetPeoplesRequest(String libraryIds, PageModel page) {
        this.libraryIds = libraryIds;
        this.page = page;
    }

    /**
     * 库id，多个以逗号分隔，最多支持64个。
     */
    private String libraryIds;

    /**
     * 姓名
     */
    private String name;

    /**
     * 上传时间戳
     */
    private Long beginTime;

    /**
     * 上传时间戳
     */
    private Long endTime;

    /**
     * 查询出生日期范围的开始时间, 例如2015-09-25
     */
    private String bornStartTime;


    /**
     * 查询出生日期范围的结束时间
     * 例如2015-09-25
     */
    private String bornEndTime;

    /**
     * 证件号
     * 英文、数字、()，长度[1,255]
     */
    private String credentialNumber;

    /**
     * 证件类型，枚举类型
     * 0：身份证
     * 1：护照
     * 2：学生证
     * 3：军官证
     * 4：驾照
     * 5：其他
     */
    private CredentialTypeEnum credentialType;


    /**
     * 性别
     */
    private GenderEnum gender;

    /**
     * 人员名单id
     */
    private String id;

    /**
     * 相似度阈值，范围1~100，
     * 图片检索时必须指定
     */
    private Integer similarityThreshold;

    /**
     * 是否返回特征值
     * true:返回特征值
     * false：不返回特征值（默认）
     */
    private boolean isFeature;

    /**
     * 分页参数
     */
    private PageModel page;

    /**
     * 图片
     */
    private Picture picture;

    @XmlElement
    public String getLibraryIds() {
        return libraryIds;
    }

    public void setLibraryIds(String libraryIds) {
        this.libraryIds = libraryIds;
    }

    @XmlElement
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @XmlElement
    public Long getBeginTime() {
        return beginTime;
    }

    public void setBeginTime(Long beginTime) {
        this.beginTime = beginTime;
    }

    @XmlElement
    public Long getEndTime() {
        return endTime;
    }

    public void setEndTime(Long endTime) {
        this.endTime = endTime;
    }

    @XmlElement
    public String getBornStartTime() {
        return bornStartTime;
    }

    public void setBornStartTime(String bornStartTime) {
        this.bornStartTime = bornStartTime;
    }

    @XmlElement
    public String getBornEndTime() {
        return bornEndTime;
    }

    public void setBornEndTime(String bornEndTime) {
        this.bornEndTime = bornEndTime;
    }

    @XmlElement
    public String getCredentialNumber() {
        return credentialNumber;
    }

    public void setCredentialNumber(String credentialNumber) {
        this.credentialNumber = credentialNumber;
    }

    @XmlElement
    public CredentialTypeEnum getCredentialType() {
        return credentialType;
    }

    public void setCredentialType(CredentialTypeEnum credentialType) {
        this.credentialType = credentialType;
    }

    @XmlElement
    public GenderEnum getGender() {
        return gender;
    }

    public void setGender(GenderEnum gender) {
        this.gender = gender;
    }

    @XmlElement
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    @XmlElement
    public Integer getSimilarityThreshold() {
        return similarityThreshold;
    }

    public void setSimilarityThreshold(Integer similarityThreshold) {
        this.similarityThreshold = similarityThreshold;
    }

    @XmlElement
    public boolean isFeature() {
        return isFeature;
    }

    public void setFeature(boolean feature) {
        isFeature = feature;
    }

    @XmlElement
    public PageModel getPage() {
        return page;
    }

    public void setPage(PageModel page) {
        this.page = page;
    }

    @XmlElement
    public Picture getPicture() {
        return picture;
    }

    public void setPicture(Picture picture) {
        this.picture = picture;
    }
}
